import com.sun.org.apache.xerces.internal.xs.StringList;

import java.sql.*;


public class MysqlTool {

    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
    //static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    //static final String DB_URL = "jdbc:mysql://localhost:3306/new_school";

    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://172.16.20.44:3306/new_school?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false";
    // 数据库的用户名与密码，需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "123456";
    static Connection conn = null;
    static Statement stmt = null;

    MysqlTool(){
        init();
    }
    public void init() {
        try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);
            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            // 执行查询
            System.out.println(" 实例化Statement对象...");
            stmt = conn.createStatement();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }
    }

    /**
     * 查询所有数据
     */
    public void queryAll(){
        try{
            String sql;
            sql = "SELECT id, point_code, point_name FROM environment_list;";
            ResultSet rs = stmt.executeQuery(sql);

            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id  = rs.getInt("id");
                String code = rs.getString("point_code");
                String name = rs.getString("point_name");

                // 输出数据
//                System.out.print("ID: " + id);
//                System.out.print(",名称: " + name);
//                System.out.print(",编号: " + code);
//                System.out.print("\n");
            }
            // 完成后关闭
            rs.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }
    }


    /**
     * 根据code查找名字
     * @param code
     * @return
     */
    public String queryNameByCade(String code){
        String name = null;
        try{
            String sql;
            sql = "SELECT point_name FROM environment_list where point_code=\""+code+"\";";
            ResultSet rs = stmt.executeQuery(sql);
//            ResultSetMetaData data = rs.getMetaData();  // 获取字段名
            if(rs.next())
            {
                name=rs.getString("point_name");
                //System.out.print("名称: " + name+"\n");
            }
            // 完成后关闭
            rs.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }
        return name;
    }


    /**
     * 根据code查找名字
     * @param code
     * @return
     */
    public String queryLocationByCade(String code){
        String location = null;
        try{
            String sql;
            sql = "SELECT point_location FROM environment_list where point_code=\""+code+"\";";
            ResultSet rs = stmt.executeQuery(sql);
//            ResultSetMetaData data = rs.getMetaData();  // 获取字段名
            if(rs.next())
            {
                location=rs.getString("point_location");
                //System.out.print("名称: " + name+"\n");
            }
            // 完成后关闭
            rs.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }
        return location;
    }

    /**
     * 按照ID插入时间信息
     * @param id
     * @param time
     */
    public void insertTimeListById(int id,  StringList time){

    }

    /**
     * 根据id修改时间信息
     * @param id
     * @param time
     */
    public void updateTimeListById(int id,  StringList time){

    }


    /**
     * 删除指定id的时间列表
     * @param id
     */
    public void deleteTimeById(int id){

    }

    /**
     *查询指定id的时间点
     * @param id
     * @return
     */
    public StringList queryTimeListById(int id){
        StringList timeList = null;

        return timeList;
    }
}
